home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga CD-ROM Collection
/
Amiga CD-ROM Collection - Auge 4000 and Cactus and Demo Util.iso
/
auge4000
/
19
/
write
/
write.s
< prev
Wrap
Text File
|
1988-05-15
|
4KB
|
255 lines
run:
move.l d0,pd0
move.l a0,pa0
move.l $4,a6 ;Testen, ob das Programm
suba.l a1,a1 ;von der Wokrbench aus,
jsr -294(a6) ;oder vom CLI gestartet
move.l d0,a4 ;wurde.
tst.l 172(a4)
bne cli ;Es wurde vom CLI aus gestartet
lea $5c(a4),a0
jsr -384(a6) ;Message abholen
jsr -372(a6)
move.l d0,a2
cmp.l #2,$1c(a2)
beq gon
rts
gon:
move.l 36(a2),d0
move.l d0,pp
bsr opendos
tst.l d0
beq closedos
jsr memory
move.l dosbase,a6
move.l pp,d0
move.l pp,a0
move.l 8(a0),d1
jsr -126(a6)
move.l pp,a0
move.l 12(a0),d1
jmp lies
cli:
move.l pd0,d0
move.l pa0,a0
cmp.b #31,d0
bhi frage
subq #2,d0
beq frage
bmi frage
rlp:
move.b (a0)+,d1
cmp.b #63,d1
beq frage
cmp.b #$20,d1
bne ok
dbra d0,rlp
jmp frage
opendos:
move.l $4,a6
lea dosname,a1
jsr -408(a6)
move.l d0,dosbase
rts
memory:
move.l $4,a6 ;Chip-Ram für die Sound-
move.l #2,d1 ;Kurve anfordern
move.l #2,d0
jsr -198(a6)
move.l d0,mmry
lea kurve,a0 ;Werte ins Chip-Ram schieben
move.l mmry,a1
move.w (a0),(a1)
rts
ok:
lea filename,a1
cmp.b #34,d1
beq rgn
move.b -(a0),d1
jmp rlp2
rgn:
subq #2,d0
rlp2:
move.b (a0)+,(a1)+
dbra d0,rlp2
type:
jsr opendos
jsr memory
tst.l d0
beq closedos
move.l #filename,d1
lies:
move.l #1005,d2
move.l dosbase,a6
jsr -30(a6)
move.l d0,filehd
beq fileerror1
move.l #name2,d1
move.l #1005,d2
jsr -30(a6)
move.l d0,outhd
loop:
move.l filehd,d1
move.l #puffer,d2
move.l #1,d3
jsr -42(a6)
tst.l d0
beq ende
lea puffer,a1
cmp.b #150,(a1)
bne wtr1
move.l filehd,d1
move.l #puffer,d2
move.l #1,d3
jsr -42(a6)
tst.l d0
beq ende
lea puffer,a1
move.b (a1),puffer2
sub.b #1,puffer2
jmp loop
wtr1:
move.l outhd,d1
move.l #puffer,d2
move.l #1,d3
jsr -48(a6)
tst.l d0
beq ende
cmp.b #$75,$bfec01 ;Escape gedrückt ?
beq ende
cmp.b #$7f,$bfec01 ;Space gedrückt ?
beq loop
cmp.b #$39,$bfec01 ;Ctrl gedrückt ?
beq pause
move.b puffer,d0
cmp #$20,d0
beq jp
cmp #10,d0
beq jp
cmp #13,d0
beq jp
move.b puffer2,d0
beq wtr2
sub.b #1,puffer2
jmp loop
wtr2:
jsr ton
gon1:
move.l #1000,d2
llp:
dbra d2,llp
jmp loop
ende:
move.l $4,a6
move.l mmry,a1
move.l #2,d0
jsr -210(a6) ;Speicher wieder freigeben
move.l dosbase,a6
move.l filehd,d1
jsr -36(a6)
move.l #100,d1
llp2:
jsr wait
dbra d1,llp2
ende2:
move.l outhd,d1
jsr -36(a6)
closedos:
move.l dosbase,a1
move.l $4,a6
jsr -414(a6)
rts
frage:
jsr opendos
tst.l d0
beq closedos
move.l dosbase,a6
jsr -60(a6)
move.l d0,outhd
move.l d0,d1
move.l #text,d2
move.l #textende-text,d3
jsr -48(a6)
jmp closedos
jp:
jsr wait
jmp gon1
fileerror1:
move.l dosbase,a6
jsr -60(a6)
move.l d0,outhd
move.l d0,d1
move.l #textende,d2
move.l #text2ende-textende,d3
jsr -48(a6)
jmp closedos
fileerror2:
move.l dosbase,a6
jsr -60(a6)
move.l d0,outhd
move.l d0,d1
move.l #text2ende,d2
move.l #text3ende-text2ende,d3
jsr -48(a6)
jmp closedos
pause:
cmp.b #$39,$bfec01
beq pause
pause2:
cmp.b #$39,$bfec01
bne pause2
pause3:
cmp.b #$39,$bfec01
beq pause3
jmp loop
wait:
move.l dosbase,a6
move.l #25000,d3
wlp1:
dbra d3,wlp1
rts
ton:
move.l mmry,$dff0a0
move #1,$dff0a4
move #800,$dff0a6
move #60,$dff0a8
move #$8201,$dff096
jsr wait
move #1,$dff096
rts
dosname: dc.b "dos.library",0
kurve: dc.b 127,-127
text: dc.b "Dieses Programm gibt den Inhalt einer Textdatei auf dem "
dc.b "Bildschirm aus.",10
dc.b "Geschrieben in 1988 von "
dc.b "Tobias Eckert, Austraße 17, 6482 Bad Orb",10,0
textende:
dc.b "Ladefehler !!! Datei nicht gefunden.",10,0
text2ende:
dc.b "Ladefehler !!! Datei kann nicht gelesen werden.",10,0
text3ende:
name2: dc.b "raw:0/0/640/200/*** Write ***"
puffer2: dc.b 0
even
dosbase: dc.l 0
filehd: dc.l 0
outhd: dc.l 0
puffer: dc.l 0
filename: blk.l 8,0
pd0: dc.l 0
pa0: dc.l 0
pp: dc.l 0
mmry: dc.l 0